package org.idtem.component.AlgoritmosAnnotation;

import org.apache.uima.analysis_component.CasAnnotator_ImplBase;
import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CASException;
import org.apache.uima.jcas.JCas;
import org.idtem.component.algoritmo.InfoDoc;
import org.idtem.component.algoritmo.engine.AlgoritmoCompletitud;
import org.idtem.component.algoritmo.engine.Algoritmos;
import org.idtem.component.algoritmo.engine.utilidades.DataInfoDocumento;
import org.idtem.component.algoritmo.engine.utilidades.UtilidadesDeAnalisis;
import org.idtem.utils.logger.LoggerHelper;
             
public class AlgoritmosAnnotation  extends CasAnnotator_ImplBase {
	
	@Override
	public void process(CAS aCas) throws AnalysisEngineProcessException {	
		LoggerHelper.getInstance().getAlgoritmosComponentLogguer().info("++++ Inicio Algoritmo Component");
		JCas aJCas = null;
		try {
			aJCas = aCas.getJCas();
		} catch (CASException e) {
			throw new AnalysisEngineProcessException("Algoritmos: no se pudo convertir CAS a JCas", null);
		}
		
		
		
		addInfoDocumento(aJCas);
		AlgoritmoCompletitud.analizar(aJCas);
     	Algoritmos.analizar(aJCas);
		
     	
		
		
		LoggerHelper.getInstance().getAlgoritmosComponentLogguer().info("++++ Fin Algoritmo Component");
			
	}


	private void addInfoDocumento(JCas cas)
	{
		InfoDoc infoDocAnnotation = new InfoDoc(cas);
		DataInfoDocumento infoDoc = UtilidadesDeAnalisis.obtenerInfoDocumento(cas);
		infoDocAnnotation.setCantOffsets(infoDoc.getCantOffset());
		infoDocAnnotation.setCantPalabras(infoDoc.getCantPalabras());
		infoDocAnnotation.setCantPalabrasConOffset(infoDoc.getCantPalabrasConOffset());
		infoDocAnnotation.setCantSentencias(infoDoc.getCantSentencias());
		infoDocAnnotation.setCantSentenciasConOffset(infoDoc.getCantSentenciasConOffset());
		
		infoDocAnnotation.setCantTokensConsulta(infoDoc.getCantTokensConsulta());
		infoDocAnnotation.setCantTokensConsultaNoFiltered(infoDoc.getCantTokensConsultaNoFiltered());
		infoDocAnnotation.setCantOffsetsFraseConsulta(infoDoc.getCantOffsetsFraseConsulta());
		
		infoDocAnnotation.setCantNombresConsulta(infoDoc.getCantNombresConsulta());
		infoDocAnnotation.setCantVerbosConsulta(infoDoc.getCantVerbosConsulta());
		infoDocAnnotation.setCantAdjetivosConsulta(infoDoc.getCantAdjetivosConsulta());
		infoDocAnnotation.setCantAdverbiosConsulta(infoDoc.getCantAdverbiosConsulta());
		infoDocAnnotation.setCantNombresConsultaConOffset(infoDoc.getCantNombresConsultaConOffset());
		infoDocAnnotation.setCantVerbosConsultaConOffset(infoDoc.getCantVerbosConsultaConOffset());
		infoDocAnnotation.setCantAdjetivosConsultaConOffset(infoDoc.getCantAdjetivosConsultaConOffset());
		infoDocAnnotation.setCantAdverbiosConsultaConOffset(infoDoc.getCantAdverbiosConsultaConOffset());
		
		
		infoDocAnnotation.addToIndexes();
	}	
	

}

;